As the use of web technologies continue to grow, web pages have become more dynamic. Now, rather than delivering content in just the form of markup language, such as the Hypertext Markup Language (HTML), web pages can include references to scripts within the markup language. The references may take the form of uniform resource locators (URLs), and the scripts may be implemented in JavaScript, for example. In some cases, dynamic web pages may be referred to as web applications, as they contain a significant amount of executable code.
Large and/or intricate web applications may include dozens of such references to scripts, and these scripts may be complex. In order for a web application to be fully executable, each of these scripts is downloaded to the web client (e.g., transmitted from the web server to a client device executing the web client). These transmissions can increase the overall time it takes for the web application to be loaded and rendered.
In particular, a script referenced in the markup language may depend on one or more additional, underlying scripts that might not be directly or explicitly referenced in the markup language. Thus, these underlying scripts are also downloaded to the web client. Furthermore, multiple scripts may depend on the same underlying scripts. When the scripts used in a web application are independently developed and bundled with their underlying dependencies in a distributed fashion (which is a desirable scenario for large-scale web application development), this can result in multiple copies of these underlying scripts being downloaded to the web client.
Current script bundling mechanisms fail to address these and other issues in an efficient fashion. As a consequence, the deployment of rich web applications can result in a slow and non-satisfactory user experience.